[SOLVED] Run guest agent commands on linux VM

foadk

Member
Mar 25, 2020
19
0
6
36
Hi.
I'm having trouble running commands using guest agent on a centos 7 VM.
I have installed qemu-guest-agent on VM and it's running. (tested via qm agent $VMID ping)
Problem is I can't execute arbitrary commands from host.
I've tried it in different forms but all failed:

Bash:
qm guest exec 384194 /bin/bash "ls"
{
   "err-data" : "/usr/bin/ls: /usr/bin/ls: cannot execute binary file\n",
   "exitcode" : 126,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "echo hello"
{
   "err-data" : "/bin/bash: echo hello: No such file or directory\n",
   "exitcode" : 127,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "echo" "hello"
{
   "err-data" : "/usr/bin/echo: /usr/bin/echo: cannot execute binary file\n",
   "exitcode" : 126,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "-c" "echo" "hello"
Unknown option: c
400 unable to parse option
qm guest exec <vmid> [<extra-args>] [OPTIONS]

In last case, it recognizes "-c" as an option for "qm guest exec", not a bash option.
So how should I run commands using qm guest exec?
 
Hi.
I'm having trouble running commands using guest agent on a centos 7 VM.
I have installed qemu-guest-agent on VM and it's running. (tested via qm agent $VMID ping)
Problem is I can't execute arbitrary commands from host.
I've tried it in different forms but all failed:

Bash:
qm guest exec 384194 /bin/bash "ls"
{
   "err-data" : "/usr/bin/ls: /usr/bin/ls: cannot execute binary file\n",
   "exitcode" : 126,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "echo hello"
{
   "err-data" : "/bin/bash: echo hello: No such file or directory\n",
   "exitcode" : 127,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "echo" "hello"
{
   "err-data" : "/usr/bin/echo: /usr/bin/echo: cannot execute binary file\n",
   "exitcode" : 126,
   "exited" : 1
}

qm guest exec 384194 /bin/bash "-c" "echo" "hello"
Unknown option: c
400 unable to parse option
qm guest exec <vmid> [<extra-args>] [OPTIONS]

In last case, it recognizes "-c" as an option for "qm guest exec", not a bash option.
So how should I run commands using qm guest exec?
Code:
qm guest exec 384194 -- ls
 
  • Like
Reactions: Sourcenux
@che
That is not what I'm looking for. Sometimes it's going to be a very big command, like multiple commands concated with &&. like echo "something" >> file.txt && mv some-file other-file && ...
I can do that on a windows guest like so:
Code:
qm guest exec 384285 "C:\WINDOWS\system32\cmd.exe" "/c any command"
But I don't know how to do it for linux guest
 
Last edited:
@che
That is not what I'm looking for. Sometimes it's going to be a very big command, like multiple commands concated with &&. like echo "something" >> file.txt && mv some-file other-file && ...
I can do that on a windows guest like so:
Code:
qm guest exec 384285 "C:\WINDOWS\system32\cmd.exe" "/c any command"
But I don't know how to do it for linux guest
By simple deduction from the previous command I posted you will get
Code:
qm guest exec 384285 -- bash -c "echo hello; echo world"
 
Last edited: